package cn.apiManager.web.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.apiManager.entity.UserInfo;
import cn.apiManager.service.UserInfoService;
import cn.apiManager.utils.MailUtil;
import cn.apiManager.utils.ResultVo;


/**
 * 
 * @ClassName UserInfoController 
 * @Function 用户信息
 * @Date  2016年1月29日 下午2:48:44
 * @author 刘永刚
 * @version V1.00 
 * @since JDK 1.8  
 * @see
 */
@Controller
@RequestMapping("/userInfo")
public class UserInfoController extends BaseAction{
	
	private Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@Resource
	private UserInfoService userInfoService;
	

	/**
	 * 主页
	 * @return
	 */
//	@Menu
    @RequestMapping(value = "/list")
    public String index() {
        return "userInfo/list";
    }

    /**
     * 注册账号
     * @Name add
     * @Description: TODO
     * @Author 刘永刚
     * @Version V1.00
     * @CreateDate 2016年1月29日 下午4:31:06
     * @Parameters @param map
     * @Parameters @param userInfo
     * @Parameters @param smtp
     * @Parameters @param from
     * @Parameters @param subject
     * @Parameters @param content
     * @Parameters @param username
     * @Parameters @param password
     * @Parameters @return
     * @Return ResultVo
     * @Throws
     */
	@ResponseBody
	@RequestMapping(value = "/add")
    public ResultVo add(ModelMap map,UserInfo userInfo,@Value("${email.url}") String url,
    		@Value("${email.smtp}") String smtp,@Value("${email.from}") String from,
            @Value("${email.subject}") String subject,@Value("${email.content}") String content,
            @Value("${email.username}") String username,@Value("${email.password}") String password) {
		
		ResultVo vo=new ResultVo();
        vo.setResult(false);
        
        UserInfo example=new UserInfo();
        example.setEmail(userInfo.getEmail());
        List<UserInfo> list = userInfoService.selectByExampleList(example);
        if(!CollectionUtils.isEmpty(list)){
            vo.setMessage("注册失败，账号已经存在！");
            vo.setStatus(500);
            return vo;
        }
        
        if( userInfoService.insert(userInfo) > 0 ){
        	url = url + userInfo.getEmail();
        	System.out.println("激活地址:"+url);
        	MailUtil.send(smtp, from, userInfo.getEmail(), subject, content.replace("url", url), username, password);
        	vo.setResult(true);
        	vo.setMessage("注册成功，请激活账号！");
        }
       
        return vo;
	}
	
	/**
	 * 激活账号
	 * @Name activate
	 * @Description: TODO
	 * @Author 刘永刚
	 * @Version V1.00
	 * @CreateDate 2016年1月29日 下午5:25:46
	 * @Parameters @param map
	 * @Parameters @param userInfo
	 * @Parameters @return
	 * @Return ResultVo
	 * @Throws
	 */
	@ResponseBody
	@RequestMapping(value = "/activate")
    public ResultVo activate(ModelMap map,UserInfo userInfo) {
		ResultVo vo=new ResultVo();
        vo.setResult(false);
        if( userInfoService.updateByPrimaryKeySelective(userInfo) > 0 ){
        	vo.setResult(true);
        }
       
        return vo;
	}

	/**
	 * 用户列表
	 * @Name findAllSysFunction
	 * @Description: TODO
	 * @Author 刘永刚
	 * @Version V1.00
	 * @CreateDate 2016年1月29日 下午5:26:03
	 * @Parameters @return
	 * @Return List<UserInfo>
	 * @Throws
	 */
	@RequestMapping("/combox")
    @ResponseBody
    public List<UserInfo> findAllSysFunction() {
        List<UserInfo> list = userInfoService.selectByExampleList(null);
        return list;
    }

	/**
	 * 判断对象是否存在
	 * @param 
	 * @return
	 */
    @ResponseBody
    @RequestMapping(value = "/exits")
    public ResultVo exits(String email) {
    	ResultVo vo=new ResultVo();
        vo.setResult(false);
        
        UserInfo example=new UserInfo();
        example.setEmail(email);
        List<UserInfo> list = userInfoService.selectByExampleList(example);
        if(CollectionUtils.isEmpty(list)){
            vo.setResult(true);
            vo.setMessage("可以使用");
        }else{
        	vo.setMessage("用户已存在");
        	vo.setStatus(500);
        }
        return vo;
    }

}
